Electronic devices are continually facing performance pressures including providing increased computing power and providing varied control capabilities. The performance pressures also include needing ever increasing abilities to extend battery life or generally improve power efficiency of a computing device's operation. Accordingly, computing devices of various types include varying ways of enter low power modes that allow the given device to use less power. Low power modes generally include stopping use of various features or powering down certain peripherals for the device.
The lowest of the low power modes include actually removing power from a device's central processing unit (“CPU”). Entering into the lowest power modes, however, typically results in such devices not retaining the CPU's state. Therefore, the device must be reset upon wakeup to restore an operating state of the CPU and associated peripherals. A programmer of applications running on such a device is forced to handle this reset condition and manually restore the application's state to where it was before the device entered into deep low power mode, i.e., power down of the CPU. This is especially true as more complex software is used in embedded systems, such software including graphical display applications, radio frequency communications having complex protocol stacks, or real time operating systems. Such applications can require several thousand CPU cycles on device startup to initialize software variables before an intended task begins. In one example, running a C-Init and User-Init processes (initialization processes for the CPU and the user application, respectively) can require up to 101 milliseconds and 298 microseconds, respectively. In addition to the time delay, the rebooting process places a further drain on applicable battery resources as well. This is a painful process for customers using such computing or processing devices subject to interruptible power sources and/or using deep low power modes.